import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * @Description
 * @Author CoderG
 * @Date 2025/6/11 19:52
 **/
public class test {
    public static void main(String[] args) {
/*         // 1. 使用字符串构造（推荐）
        BigDecimal a = new BigDecimal("0.1");
        System.out.println("a=" + a);
        // 2. 使用valueOf方法（推荐，内部会调用toString）
        BigDecimal b = BigDecimal.valueOf(0.1);
        System.out.println("b=" + b); */
        // 3. 使用double构造（不推荐）
        BigDecimal c = new BigDecimal(0.1); // 会有精度问题
        System.out.println(new BigDecimal(0.1));

        BigDecimal a = new BigDecimal("10.5");
        BigDecimal b = new BigDecimal("3.2");

        // 加法
        BigDecimal sum = a.add(b);  // 13.7

        // 减法
        BigDecimal difference = a.subtract(b);  // 7.3

        // 乘法
        BigDecimal product = a.multiply(b);  // 33.60

        // 除法（需要指定舍入模式）
        RoundingMode halfUp = RoundingMode.HALF_UP;
        BigDecimal quotient = a.divide(b, 3, halfUp);  // 3.28
        System.out.println("quotient:"+quotient);

        BigDecimal x = new BigDecimal("10.00");
        BigDecimal y = new BigDecimal("10.0");

// 不要用equals()比较，它会比较精度
        System.out.println(x.equals(y));  // false

// 应该用compareTo()
        System.out.println(x.compareTo(y) == 0);  // true

        // 设置精度和舍入模式
        BigDecimal e = new BigDecimal("3.1415926535");
        BigDecimal rounded = e.setScale(4, RoundingMode.HALF_UP);  // 3.1416
    }


}
